package com.base.common.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * 从jar中读取文件，解决部署和开发模式下文件读取不一致的问题 部署模式下需从jar中读取文件流，通过创建中间文件的方式解决文件读取的问题
 * 但要注意：文件读取完要及时删除，以免对外泄露内部访问细节 hubery.niejinzhen加注视 2012-9-24 下午3:54:01
 * 
 * @author jimmy.dongjia
 */
public class ReadJarUtil {
	/**
	 * 从jar中读取文件 hubery.niejinzhen加注视
	 * 
	 * @author jimmy.dongjia
	 * @param configFilePath
	 * @return File
	 */
	public static File getFile(String filePath) {
		InputStream inputStream = ReadJarUtil.class.getClassLoader()
				.getResourceAsStream(filePath);
		// 声明一个临时file文件类
		File file = new File(filePath);
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(
					inputStream));
			// 文件内容
			String content = "";
			// 写入临时file文件的输入流
			FileOutputStream fileOutputStream = new FileOutputStream(file);
			while ((content = br.readLine()) != null) {
				fileOutputStream.write(content.getBytes("utf-8"));
			}
			fileOutputStream.close();
			inputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return file;
	}

	/**
	 * @author jimmy.dongjia
	 * @param filePath
	 * @return InputStream 返回文件的输入流
	 */
	public static InputStream getInputStream(String filePath) {
		InputStream inputStream = ReadJarUtil.class.getClassLoader()
				.getResourceAsStream(filePath);
		return inputStream;
	}
}
